home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / misc / emu / ATUtilities.lha / ATUtilities / ASM / QMM.ASM < prev    next >
Assembly Source File  |  2000-09-29  |  3KB  |  213 lines

  1. code segment
  2.  assume cs:code,ds:code
  3.  org 0
  4.  
  5. toAmiga    equ 0
  6. toPC       equ 2000
  7. toAmigaCNT equ 4000+00
  8. toPCCnt    equ 4000+02
  9. arg1       equ 4000+04
  10. arg2       equ 4000+06
  11. arg3       equ 4000+08
  12. arg4       equ 4000+0A
  13.  
  14. befehl       equ 2
  15. status       equ 3
  16. end_adresse  equ 14
  17. anzahl       equ 18
  18. buffer       equ 14
  19. anz_befehle  equ 16
  20.  
  21. qmm_treiber:
  22.  dw -1,-1
  23.  db 00h,80h
  24.  dw offset strategie
  25.  dw offset interrupt
  26.  db "QMM1    "
  27.  
  28. fkt_tab:
  29.  dw offset init
  30.  dw offset dummy
  31.  dw offset dummy
  32.  dw offset not_supported
  33.  dw offset read
  34.  dw offset read_p
  35.  dw offset dummy
  36.  dw offset reset
  37.  dw offset write
  38.  dw offset write
  39.  dw offset dummy
  40.  dw offset dummy
  41.  dw offset not_supported
  42.  dw offset dummy
  43.  dw offset dummy
  44.  dw offset dummy
  45.  dw offset write
  46.  
  47. db_ptr        dw (?),(?)
  48. janus_ofs     dw (?)
  49.  
  50.  
  51. strategie  proc far
  52.  mov cs:db_ptr,bx
  53.  mov cs:db_ptr+2,es
  54.  ret
  55. strategie  endp
  56.  
  57.  
  58. interrupt  proc far
  59.  pusha
  60.  push cs
  61.  pop ds
  62.  
  63.  les di,cs:db_ptr
  64.  mov bl,es:b[di+befehl]
  65.  cmp bl,anz_befehle
  66.  jle aufruf
  67.  
  68.  mov ax,8003h
  69.  jmp interrupt_ende
  70.  
  71. aufruf:
  72.  shl bl,1
  73.  xor bh,bh
  74.  call [fkt_tab+bx]
  75.  les di,cs:db_ptr 
  76.  
  77. interrupt_ende:
  78.  or ax,100h
  79.  mov es:w[di+status],ax
  80.  popa 
  81.  ret
  82. interrupt  endp
  83.  
  84.  
  85. dummy  proc near
  86.  xor ax,ax
  87.  ret
  88. dummy  endp
  89.  
  90.  
  91. not_supported  proc near
  92.  mov ax,8003h
  93.  ret
  94. not_supported  endp
  95.  
  96.  
  97. reset  proc near
  98.  xor ax,ax
  99.  ret
  100. reset  endp
  101.  
  102.  
  103. read  proc near
  104.  mov ax,8003h
  105.  ret
  106. read endp
  107.  
  108.  
  109. read_p  proc near
  110.  mov ax,8003h
  111.  ret
  112. read_p endp
  113.  
  114. write proc near
  115.  push ds
  116.  
  117.  lds si,es:w[di+buffer]
  118.  
  119.  mov es,0d400
  120.  mov di,cs:janus_ofs
  121.  mov ax,es:w[di+toAmigaCNT]
  122.  cmp ax,1999
  123.  jle write_start
  124.  
  125.  mov ax,20
  126.  jmp write_ende 
  127.  
  128. write_start:
  129.  add di,ax
  130.  mov ch,ds:b[si]
  131.  mov es:b[di],ch
  132.  mov di,cs:janus_ofs
  133.  add ax,1
  134.  mov es:w[di+toAmigaCNT],ax
  135.  mov es:w[di+arg1],1
  136.  
  137.  cmp ax,200
  138.  jle xxx
  139.  
  140.  mov ah,7
  141.  mov al,31
  142.  int 0b
  143.  
  144. xxx:
  145.  xor ax,ax
  146.  
  147. write_ende:
  148.  pop ds
  149.  ret
  150. write endp
  151.  
  152.  
  153. call_and_wait  proc near
  154.  mov ah,7
  155.  mov al,31
  156.  int 0b
  157.  mov ah,8
  158.  mov al,31
  159.  int 0b
  160.  ret
  161. call_and_wait  endp
  162.  
  163. init  proc near
  164.  push cs
  165.  pop ds
  166.  
  167.  mov dx,offset init_text
  168.  mov ah,9
  169.  int 21h
  170.  
  171.  mov ah,1
  172.  mov al,31
  173.  int 0b
  174.  mov janus_ofs,di
  175.  cmp di,-1
  176.  jne janus_okay
  177.  
  178.  mov dx,offset fehler_text
  179.  mov ah,9
  180.  int 21h
  181.  
  182.  les di,cs:db_ptr 
  183.  mov es:w[di+end_adresse],offset qmm_treiber
  184.  mov es:w[di+end_adresse+2],cs
  185.  jmp init_ende
  186.  
  187. janus_okay:
  188.  les di,cs:db_ptr 
  189.  mov es:w[di+end_adresse],offset ende
  190.  mov es:w[di+end_adresse+2],cs
  191.  
  192.  mov dx,offset okay_text
  193.  mov ah,9
  194.  int 21h
  195.  
  196. init_ende:
  197.  xor ax,ax
  198.  ret
  199. init  endp
  200.  
  201. init_text    db "ATUtilities QMM-Schnittstellen-Handler - Version 1.0",13,10
  202.          db "Copyright (C) 1993 by Thomas Dreibholz",13,10,"$"    
  203. fehler_text  db "Amiga-Handler an Janus-Interrupt 31 nicht aktiv!",13,10
  204.          db "Bitte berprfen Sie die Installation der ATUtilities.",13,10
  205.          db "Der Treiber konnte nicht installiert werden.",13,10,10,"$"
  206. okay_text    db "Schnittstelle ist als QMM1: verfgbar.",13,10
  207.              db "Der Treiber wurde erfolgreich installiert.",13,10,10,"$"
  208.  
  209. ende   equ this byte
  210.  
  211. code  ends
  212.  end
  213.